/*******************************************************************************
  * 文件：Heartbeat.c
  * 作者：zyz
  * 版本：v1.0.0
  * 日期：2017-05-16
  * 说明：心跳
*******************************************************************************/
/* 头文件 *********************************************************************/
#include "Heartbeat.h"
#include "OS_Kernel.h"
#include "Hardware_IO.h"
#include "Debug.h"
#include "Display.h"
// #include "DevInfor.h"
#include "DevRun.h"
#include "Buzzer.h"
#include "DevState.h"
#include "KeyHandler.h"
#include "YLComm.h"
#include "YLDeviceCtrl.h"


/* 宏定义 *********************************************************************/
/* 类型定义 *******************************************************************/
/* 变量定义 *******************************************************************/
static Timer_ts sHeartbeatTimer;    // 心跳定时器
extern DevRunCtrl_ts sDevRunCtrl;

/* 函数声明 *******************************************************************/
static void Heartbeat_TimerCallback(void);    // 定时器回调函数

/* 函数定义 *******************************************************************/
/*******************************************************************************
  * 函数名：Heartbeat_Init
  * 功  能：初始化
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
void Heartbeat_Init(void)
{
//    Display_Hob1Gear(1);
//    Display_Hob2Gear(1);
//    Display_Hob3Gear(1);
//    Display_Hob4Gear(1);
//    Display_ShowTime(88);
    // 开启1S定时器心跳
	OS_TimerStart(&sHeartbeatTimer,u16SEC_TO_MSEC, Heartbeat_TimerCallback);
}

/*******************************************************************************
  * 函数名：Heartbeat_TimerCallback
  * 功  能：定时器回调函数
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
static void Heartbeat_TimerCallback(void)
{
//    Display_Hob1Gear(OS_TimerGetExpiredTimes(&sHeartbeatTimer)%10);
//    DEBUG("Heart Beat:%d\r\n",OS_TimerGetExpiredTimes(&sHeartbeatTimer));
    // DEBUG("Key value:0x%08x\r\n",Dev_GetKeyValue());
    
    // 确认各炉头的状态 - 调试0228
    // DEBUG("RunState-%d|%d|%d|%d| \r\n",
    // sDevRunCtrl.eRunState[0],sDevRunCtrl.eRunState[1],sDevRunCtrl.eRunState[2],sDevRunCtrl.eRunState[3]);
    
    // 各炉头的定时时间 - 调试0228
    // DEBUG("Time-%d|%d|%d|%d| \r\n",sDevRunCtrl.au16TimingTimeS[0],sDevRunCtrl.au16TimingTimeS[1],
    // sDevRunCtrl.au16TimingTimeS[2],sDevRunCtrl.au16TimingTimeS[3]);

    // // sTimeBlinkTimer定时器是否激活 - 调试0228
    // DEBUG("STimeBlinkTimer-%d| \r\n",OS_TimerIsActive(&sDevRunCtrl.sTimeBlinkTimer));

    // 蜂鸣器测试 - 调试0301
    // Buzzer_Play(15);

    // 炉头定时类型输出
    // DEBUG("TimingType-%d|%d|%d|%d| \r\n",sDevRunCtrl.eTimingType[0], sDevRunCtrl.eTimingType[1], \
    //                                      sDevRunCtrl.eTimingType[2], sDevRunCtrl.eTimingType[3]);

    // 系统的炉头索引输出
    // DEBUG("u8CZIndex-%d| \r\n",sDevRunCtrl.u8CZIndex);

    // 系统的Lock状态输出
    // DEBUG("Lock-%d| \r\n", Dev_GetChildLock());
  
    //Key_PowerLongPressHandler();

//    U8 au8Data[10] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A};

//    YLComm_Chn2SendFrame(U8_YL_COMM_CZ2_ADDR, au8Data, 10);

//    YLComm_Chn1PowerCtrl(U8_YL_COMM_CZ1_ADDR,500/20);
//    
//    YLComm_Chn1PowerCtrl(U8_YL_COMM_CZ2_ADDR,1000/20);
//    
//    YLComm_Chn2PowerCtrl(U8_YL_COMM_CZ1_ADDR,2000/20);
//    
//    YLComm_Chn2PowerCtrl(U8_YL_COMM_CZ2_ADDR,3020/20);
    
    if(OS_TimerGetExpiredTimes(&sHeartbeatTimer)%2)
    {
        // 开LED
        Hardware_LED1Ctrl(ON);
    }
    else
    {
        // 关LED
        Hardware_LED1Ctrl(OFF);
    }
}

/*******************************************************************************
  * 函数名：Heartbeat_Active
  * 功  能：激活心跳
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
void Heartbeat_Active(void)
{
    // 清除过期次数
    OS_TimerClearExpiredTimes(&sHeartbeatTimer);
}

/***************************** 文件结束 ***************************************/
